// 导入joi验证库，用于数据验证
const joi = require('joi');

// 定义ID验证规则，必须存在
const id = joi.required();

// 定义邮箱正则表达式
// 匹配标准邮箱格式，允许包含点、下划线和连字符
const emailPattern = /^[a-zA-Z0-9]+([._-]*[a-zA-Z0-9]+)*@([a-zA-Z0-9]+([._-][a-zA-Z0-9]+))+$/;

// 定义邮箱验证规则
// 使用正则表达式验证，必须符合邮箱格式
const email = joi.string().pattern(emailPattern).required();

// 定义姓名正则表达式
// 支持中英文、特殊符号（·和.），长度不限
const namePattern = /^[a-zA-Z\u4e00-\u9fa5]+(?:[·\.][a-zA-Z\u4e00-\u9fa5]+)*$/u;

// 定义用户名验证规则
// 使用正则表达式验证，必须符合姓名格式
const name = joi.string().pattern(namePattern).required();

// 定义密码验证规则：不能纯数字，包含字母和数字，长度6-12，必填
const newPassword = joi.string().pattern(/^(?![0-9]+$)[a-z0-9]{1,50}$/).min(6).max(12).required();
const oldPassword = joi.string().pattern(/^(?![0-9]+$)[a-z0-9]{1,50}$/).min(6).max(12).required();
const password = joi.string().pattern(/^(?![0-9]+$)[a-z0-9]{1,50}$/).min(6).max(12).required();
// 定义账号验证规则：字母数字组合，长度1-12，必填
const account = joi.string().alphanum().min(1).max(12).required();

//
const sex = joi.string().required();
const department = joi.string().required();
const identity = joi.string().required();

// 导出邮箱验证规则对象
exports.email_limit = {
    // 验证请求体中的字段
    body: {
        id,  // ID验证规则
        email, // 邮箱验证规则
    }
}

// 导出姓名验证规则对象
exports.name_limit = {
    // 验证请求体中的字段
    body: {
        id,  // ID验证规则
        name, // 姓名验证规则
    }
}
// 导出密码验证规则对象
exports.password_limit = {
    // 验证请求体中的字段
    body: {
        id,  // ID验证规则
        oldPassword,
        newPassword,
    }
}
//登陆界面忘记密码更新密码
exports.login_update_password_limit = {
    body: {
        id,  // ID验证规则
        newPassword
    }
}
//创建管理员
exports.createAdmin_limit = {
    body: {
        account,
        password,
        name,
        email,
        sex,
        department,
        identity
    }
}
